/**
 * 版权所有(C)，上海海鼎信息工程股份有限公司，2009，所有权利保留。
 * 
 * 项目名：	rumba-widget2
 * 文件名：	IsRMenuItem.java
 * 模块说明：	
 * 修改历史：
 * Jan 18, 2009 - lxm - 创建。
 */
package com.hd123.rumba.gwt.widget2.client.menu;

import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.ui.Widget;

/**
 * 标记一个菜单项。
 * 
 * @author lxm
 * 
 */
public interface IsRMenuItem {

  /**
   * 取值所属菜单。
   * 
   * @return
   */
  public RPopupMenu getParentMenu();

  /**
   * 设置所属菜单。
   * 
   * @param menu
   */
  public void setParentMenu(RPopupMenu menu);

  /**
   * 将对象转换为一个Widget。
   * 
   * @return
   */
  public Widget toWidget();

  /**
   * 设置为选中或不选中的显示风格。
   * 
   * @param selected
   *            指定是否选中。
   */
  public void setSelectionStyle(boolean selected);

  /**
   * 判断指定的元素是否属于当前菜单项。
   * 
   * @param element
   *            指定的界面元素。
   * @return
   */
  public boolean isOrHasChild(Element element);

  /**
   * 当菜单项被点击后被调用。
   */
  public void onClick();

  /**
   * 当鼠标被移动到该菜单项上时被调用。
   */
  public void onMouseOver();

  /**
   * 当鼠标离开该菜单项的上方时被调用。
   */
  public void onMouseOut();

  /**
   * 取得当前是否可见。
   * 
   * @return
   */
  public boolean isVisible();

  /**
   * 设置是否可见。
   * 
   * @param visible
   */
  public void setVisible(boolean visible);

  /**
   * 取得当前是否可用。
   * 
   * @return
   */
  public boolean isEnabled();

  /**
   * 返回菜单项是否作为分隔条。
   * 
   * @return
   */
  public boolean asSeperator();

  /**
   * 取得所包含的子菜单。
   * 
   * @return
   */
  public RPopupMenu getSubMenu();

  /**
   * 取得当前的上下文控件，即引起菜单项所属菜单被弹出的上下文控件。
   * 
   * @return
   */
  public Widget getContextWidget();
}
